﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using jQueryAir.Utils;

namespace jQueryAir.DataAccess
{
    using System.Data;

    using Microsoft.Practices.EnterpriseLibrary.Data;

    using jQueryAir.BusinessEntity;

    public class InmuebleDAL : Singleton<InmuebleDAL>
    {
        static DatabaseProviderFactory factory = new DatabaseProviderFactory();
        static Database BaseDatos = factory.Create("ConnectionString");

        public IList<Inmueble> consultarStock(Inmueble inmueble)
        {
            var inmuebles = new List<Inmueble>();
            var comando = BaseDatos.GetStoredProcCommand("InmConsultarStock");
            BaseDatos.AddInParameter(comando, "IdEmpresa", DbType.Int32, inmueble.IdEmpresa);
            BaseDatos.AddInParameter(comando, "IdProyecto", DbType.Int32, inmueble.IdProyecto);
            BaseDatos.AddInParameter(comando, "IdEtapa", DbType.Int32, inmueble.IdEtapa);
            BaseDatos.AddInParameter(comando, "IdTipoInmueble", DbType.Int32, inmueble.IdTipoInmueble);

            using (var lector = BaseDatos.ExecuteReader(comando))
            {
                while (lector.Read())
                {
                    inmuebles.Add(new Inmueble
                    {
                        IdEdificio = lector.GetInt32(lector.GetOrdinal("IdEdificio")),
                        Edificio = lector.GetString(lector.GetOrdinal("Edificio")),
                        TipoConstruccion = lector.GetString(lector.GetOrdinal("TipoConstruccion")),
                        NumeroUnidades = lector.GetInt32(lector.GetOrdinal("NumeroUnidades")),
                        NumeroPisos = lector.GetInt32(lector.GetOrdinal("NumeroPisos")),
                        AreaTerrenoEdificio = lector.GetDecimal(lector.GetOrdinal("AreaTerrenoEdificio")),
                        FechaInicio = lector.GetDateTime(lector.GetOrdinal("FechaInicio")),
                        FechaEntrega = lector.GetDateTime(lector.GetOrdinal("FechaEntrega")),
                        Estado = lector.GetString(lector.GetOrdinal("Estado")),
                        Observacion = lector.GetString(lector.GetOrdinal("Observacion")),
                        IdUnidadInmobiliaria = lector.GetInt32(lector.GetOrdinal("IdUnidadInmobiliaria")),
                        NroPiso = lector.GetInt32(lector.GetOrdinal("NroPiso")),
                        NroInmueble = lector.GetString(lector.GetOrdinal("NroInmueble")),
                        Direccion = lector.GetString(lector.GetOrdinal("Direccion")),
                        FichaIndependizacion = lector.GetString(lector.GetOrdinal("FichaIndependizacion")),
                        NumeroCertificado = lector.GetString(lector.GetOrdinal("NumeroCertificado")),
                        Observaciones = lector.GetString(lector.GetOrdinal("Observaciones")),
                        Modelo = lector.GetString(lector.GetOrdinal("Modelo")),
                        BonoTP = lector.GetString(lector.GetOrdinal("BonoTP")),
                        EstadoInmueble = lector.GetString(lector.GetOrdinal("EstadoInmueble")),
                        TipoInmueble = lector.GetString(lector.GetOrdinal("TipoInmueble")),
                        Vista = lector.GetString(lector.GetOrdinal("Vista")),
                        AreaTerreno = lector.GetDecimal(lector.GetOrdinal("AreaTerreno")),
                        AreaTechada = lector.GetDecimal(lector.GetOrdinal("AreaTechada")),
                        AreaConstruida = lector.GetDecimal(lector.GetOrdinal("AreaConstruida")),
                        AreaTerraza = lector.GetDecimal(lector.GetOrdinal("AreaTerraza")),
                        AreaJardin = lector.GetDecimal(lector.GetOrdinal("AreaJardin")),
                        AreaLibre = lector.GetDecimal(lector.GetOrdinal("AreaLibre")),
                        AreaVenta = lector.GetDecimal(lector.GetOrdinal("AreaVenta")),
                        NumDormitorio = lector.GetDecimal(lector.GetOrdinal("NumDormitorio")),
                        NumBanios = lector.GetDecimal(lector.GetOrdinal("NumBanios")),
                        CodigoBancario = lector.GetString(lector.GetOrdinal("CodigoBancario")),
                        CodigoCatastral = lector.GetString(lector.GetOrdinal("CodigoCatastral")),
                        Moneda = lector.GetString(lector.GetOrdinal("Moneda")),
                        EstadoInmuebleImagen = lector.GetString(lector.GetOrdinal("EstadoInmuebleImagen")),
                        TipoFinanciamientoImagen = lector.GetString(lector.GetOrdinal("TipoFinanciamientoImagen"))
                    });
                }
            }

            comando.Dispose();
            return inmuebles;
        }      
    }
}
